public class Secuencia extends Herramienta{
  
  private int resNLados=-1;
  private int estado = 0;
  private ArrayList puntos;
  private int lados=0;
  
  
  
  public Secuencia(int posicionx,int posiciony,int altoherramienta,int anchoherramienta,String nombre){
   this.posicionx=posicionx;
   this.posiciony=posiciony;
   this.anchoherramienta = anchoherramienta;
   this.altoherramienta = altoherramienta;
   this.nombre=nombre;
   this.puntos = new ArrayList();
  }
  
  public void setResNLados(int res){
    this.resNLados = res;
  }
  
  
  public boolean mousePressed(int offsetx,int offsety,float zoom,float zoomy,float dragX,float dragY){
  
     
     
    int[] punto = new int[2];
    switch(estado){
    case 0:
    if(mouseButton == LEFT){
      puntos=new ArrayList();
      punto[0]=(int)((((mouseX-dragX) -((width-offsetx)/2))/zoom));
      punto[1]=(int)((((mouseY-dragY) -((height-offsety)/2))/zoomy));
      puntos.add(punto);
      estado++;
      lados++;
      return false;}
      case 1:
      if(mouseButton==LEFT){
        if(lados<resNLados-1 || resNLados == -1){
        punto[0]=(int)((((mouseX-dragX) -((width-offsetx)/2))/zoom));
      punto[1]=(int)((((mouseY-dragY) -((height-offsety)/2))/zoomy));
        puntos.add(punto);
        lados++;
        return false;}
        else{
        punto[0]=(int)((((mouseX-dragX) -((width-offsetx)/2))/zoom));
      punto[1]=(int)((((mouseY-dragY) -((height-offsety)/2))/zoomy));
        puntos.add(punto);
        lastEtiqueta = new Etiqueta(puntos,nombre,5);
        estado=0;
        println("acabo");
        lados=0;
        return true;
        }
      }
      else if (mouseButton==RIGHT && resNLados==-1){
        //punto[0]=mouseX -((width-offsetx)/2);
        //punto[1]=mouseY -((height-offsety)/2);
        //puntos.add(punto);
        lastEtiqueta = new Etiqueta(puntos,nombre,5);
        estado=0;
        lados=0;
        println("acabo");
        return true;
        
        
      }
      
      
      
   } 
   return false;
  }
  
  
  public void displayEstado(int offsetx,int offsety,float zoom,float zoomy,float dragX,float dragY){
   if(estado==1){
     Iterator i = puntos.iterator();
     
     
     while(i.hasNext()){
      int[] punto = (int[]) i.next();
      
      rect(punto[0]*zoom+((width-offsetx)/2)+dragX,punto[1]*zoomy+((height-offsety)/2)+dragY,1,1);
      
      
     
      
     }
     
   } 
  }
  
  
    public String getTextoHelper1(){
     StringBuffer s = new StringBuffer();
     s.append(nombre+" label, pont secuence");
     if(resNLados != -1){
     s.append(" width allways "+resNLados+" points");}
        
     return s.toString();
 }
 
 
 
 public String getTextoHelper2(){
 return "SECUENCE MODE: Make right click to define the label and right click to finish it";
}
  
}
